package UT01.actividad7;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class Eje3y4 {
	
	public static void leerNumerosBin(String nombrefichero) {
		DataInputStream fileIn = null;
		try {

			// creamos un flujo de salida al fichero

			fileIn = new DataInputStream(new FileInputStream(nombrefichero));

			try {
				while (true) {

					System.out.println(fileIn.readInt());
				}
			} catch (EOFException eof) {
			}
			;

		} catch (FileNotFoundException fnfe) {
			System.out.println("El fichero " + nombrefichero
					+ " no se encuentra");
		} catch (IOException ioe) {
			System.out.println("Error de E/S");
		} finally {
			try {
				fileIn.close();
			} catch (IOException e) {
			}
		}
	}

	public static ArrayList<Integer>  leerNumerosTexto(String nombrefichero) {
		ArrayList<Integer> lista = new ArrayList<Integer>();	
		FileReader f = null;
		// Declaramos el fichero
				try {
				
					f = new FileReader(nombrefichero); // Creamos el flujo de entrada
					int i;
					String num = "";
					boolean leeNum = false;
					while ((i = f.read()) != -1){ //se va leyendo un car�cter
							if (i!=';'){
								if (leeNum){
									num+=(char)i;
								}
								else{
									leeNum = true;
									num+=(char)i;
								}
							}
							else{
								if (leeNum){
									lista.add(Integer.parseInt(num));
									System.out.println(num);
									num="";
								}
							}
							//new java.util.Scanner(System.in).nextLine();
						}
					
					
				} 
				catch (FileNotFoundException fnfe) {
					System.out.println("El fichero "+nombrefichero+" no se encuentra");	}
				catch (IOException ioe) {
					System.out.println("El disco est� lleno o protegido contra escritura ");	}
			
				finally { 
					try {
						f.close();
						System.out.println("---Fichero terminado---");
					} catch (IOException e) {						
						} // cficheros/erramos el fichero}
				}
				
				return lista;
	}
	

	public static void escribir(String nombrefichero, ArrayList<Integer>  lista) {
		DataOutputStream fileOut = null;
		try {

			// creamos un flujo de salida al fichero

			fileOut = new DataOutputStream(new FileOutputStream(nombrefichero));
			
			for(Integer i: lista){
				fileOut.writeInt(i);
			}

		} catch (FileNotFoundException fnfe) {
			System.out.println("El fichero " + nombrefichero
					+ " no se encuentra");
		} catch (IOException ioe) {
			System.out.println("Error de E/S");
		} finally {
			try {
				fileOut.close();
			} catch (IOException e) {
			}
		}
	}

	public static void main(String[] args) {
		String ficheroTXT = "C:/ENTEROS.TXT";
		String ficheroBIN= "C:/ENTEROS.BIN";
		ArrayList<Integer> lista ;
		
		lista = leerNumerosTexto(ficheroTXT);
		escribir(ficheroBIN,lista);
		leerNumerosBin(ficheroBIN);
	}

}
